"ui";
var color = "#fb2f2d";
ui.layout(
    <drawer id="drawer">
        <vertical>
            <appbar>
                <toolbar id="toolbar" title="老黑脚本" />
                {/* <tabs id="tabs" /> */}
            </appbar>
            <viewpager id="viewpager">
                <frame>
                    <ScrollView>
                        <vertical>
                            {/* <input id="qqyz" textColor="{{color}}" gravity="center" hint="请输入激活码" inputType="number" text="qq1257802889" /> */}
                            <input id="jihuoma" gravity="center" hint="请输入激活码" text="" />
                            <linear padding="5 0 0 0">
                                <Switch id="autoService" textColor="red" text="无障碍服务（注意！必须开启才能正常运行脚本）" checked="{{auto.service != null}}" />
                            </linear>

                            <linear padding="5 0 0 0">
                                <text textColor="black" textSize="20" text="模式设置" />
                            </linear>
                            <radiogroup orientation="horizontal">
                                <radio id="ptxz" checked="true" text="登号" />
                                <radio id="ptxz1" text="采集" />
                                <radio id="ptxz2" text="还原" />
                                <radio id="ptxz3" text="注册" />
                            </radiogroup>

                            <linear padding="5 0 0 0">
                                <text textColor="black" textSize="20" text="登号设置" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="新密码: " />
                                <input lines="1" id="szmm" w="auto" text="lbh886633" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="关注数量: " />
                                <input lines="1" id="gzsl" w="auto" text="190" />
                                <text textColor="black" text="~" />
                                <input lines="1" id="gzsl1" w="auto" text="200" />
                                <text textColor="black" text="个,每次间隔" />
                                <input lines="1" id="gzjg" w="auto" text="400" />
                                <text textColor="black" text="~" />
                                <input lines="1" id="gzjg1" w="auto" text="800" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="上传数量: " />
                                <input lines="1" id="scsl" w="auto" text="1" />
                                <text textColor="black" text="个" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="话题和视频标题: " />
                                <input id="htbt" w="auto" text="click the link to find more lingerie fashion" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="@用户: " />
                                <input lines="1" id="atyh" w="auto" text="copyshoe001" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="简介: " />
                                <input id="jj" w="auto" text="touch link buy toys~" />
                            </linear>
                            <linear padding="5 0 0 0">

                                <text textColor="black" text=" 网站: " />
                                <input id="wz" w="auto" text="https://betterlove.online/products/3-spot-vibrating-tongue-wave-wearing
" />
                            </linear>
                            <linear>
                                <checkbox id="gzyh" checked="true" text="关注用户" />
                                <checkbox id="zlxg" text="资料修改" />
                                <checkbox id="ghtx" text="更换头像" />
                                <checkbox id="scsp" text="上传视频" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" textSize="20" text="采集设置" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" text="采集: " />
                                <input lines="1" id="cjlj" w="auto" text="100" />
                                <text textColor="black" text=" 条链接" />
                            </linear>
                            <linear padding="5 0 0 0">
                                <text textColor="black" textSize="20" text="还原设置" />
                            </linear>
                            {/* <linear padding="5 0 0 0">
                                <text textColor="black" text="环境路径: " />
                                <input id="hjlj" w="auto" text="/sdcard/yztc/studioplugin/wipeKing/env/2020-09/1/" />
                            </linear> */}
                            <linear padding="5 0 0 0">
                                <button id="ok" w="*" h="auto" layout_gravity="bottom" style="Widget.AppCompat.Button.Colored" text="启动" />
                            </linear>
                        </vertical>
                    </ScrollView>
                </frame>
            </viewpager>
        </vertical>
        <vertical layout_gravity="left" bg="#ffffff" w="280">
            <img w="280" h="200" scaleType="fitXY" src="http://images.shejidaren.com/wp-content/uploads/2014/10/023746fki.jpg" />
            <list id="menu">
                <horizontal bg="?selectableItemBackground" w="*">
                    <img w="50" h="*" padding="16" src="{{this.icon}}" tint="{{color}}" />
                    <text textColor="black" textSize="15sp" text="{{this.title}}" layout_gravity="center" />
                </horizontal>
            </list>
        </vertical>
    </drawer>
);

// s = encodeURI(s)

console.setGlobalLogConfig({
    "file": "/sdcard/AjLog.txt"
});

//创建选项菜单(右上角)
ui.emitter.on("create_options_menu", menu => {
    menu.add("设置");
    menu.add("日志");
    menu.add("关于");
    menu.add("退出");
});
//监听选项菜单点击
ui.emitter.on("options_item_selected", (e, item) => {
    switch (item.getTitle()) {
        case "设置":
            app.startActivity("settings");
            break;
        case "日志":
            app.startActivity("console");
            break;
        case "关于":
            alert("关于", "作者QQ");
            break;
        case "退出":
            exit()
            break;
    }
    e.consumed = true;
});
activity.setSupportActionBar(ui.toolbar);
//设置滑动页面的标题
ui.viewpager.setTitles(["功能区"]);
//让滑动页面和标签栏联动
// ui.tabs.setupWithViewPager(ui.viewpager);
//让工具栏左上角可以打开侧拉菜单
ui.toolbar.setupWithDrawer(ui.drawer);
ui.menu.setDataSource([
    {
        title: "选项一",
        icon: "@drawable/ic_android_black_48dp"
    },
    {
        title: "选项二",
        icon: "@drawable/ic_settings_black_48dp"
    },
    {
        title: "选项三",
        icon: "@drawable/ic_favorite_black_48dp"
    },
    {
        title: "退出",
        icon: "@drawable/ic_exit_to_app_black_48dp"
    }
]);

ui.menu.on("item_click", item => {
    switch (item.title) {
        case "退出":
            exit()
    }
})
//指定确定按钮点击时要执行的动作
ui.autoService.on("check", function (checked) {
    // 用户勾选无障碍服务的选项时，跳转到页面让用户去开启
    if (checked && auto.service == null) {
        app.startActivity({
            action: "android.settings.ACCESSIBILITY_SETTINGS"
        });
    }
    if (!checked && auto.service != null) {
        auto.service.disableSelf();
    }
});


ui.emitter.on("resume", function () {
    // 此时根据无障碍服务的开启情况，同步开关的状态
    ui.autoService.checked = auto.service != null;
});



var storage = storages.create("gjdy");

//回复数据()
function 回复数据() {
    try {
        var content = storage.get("pz");
        if (content != null) {
            ui.jihuoma.setText(content.k2);
            ui.szmm.setText(content.k3);
            ui.gzsl.setText(content.k4);
            ui.gzsl1.setText(content.k5);
            ui.gzjg.setText(content.k6);
            ui.gzjg1.setText(content.k7);
            ui.scsl.setText(content.k8);
            ui.htbt.setText(content.k9);
            ui.jj.setText(content.k10);
            ui.wz.setText(content.k11);
            ui.cjlj.setText(content.k12);
        }
    } catch (e) {
    }
}


function 保存数据() {
    try {
        storage.put("pz", {
            "k2": ui.jihuoma.text(),
            "k3": ui.szmm.text(),
            "k4": ui.gzsl.text(),
            "k5": ui.gzsl1.text(),
            "k6": ui.gzjg.text(),
            "k7": ui.gzjg1.text(),
            "k8": ui.scsl.text(),
            "k9": ui.htbt.text(),
            "k10": ui.jj.text(),
            "k11": ui.wz.text(),
            "k12": ui.cjlj.text(),
        })
    } catch (e) {

    }
}

var qd = 0
ui.ok.click(function () {
    //保存数据()
    if (qd == 0) {
        qd = 1
        //threads.start(悬浮)
        threads.start(主程序)
    } else {
        log("脚本已经启动了")
    }
});

var content = storage.get("xd");
if (device.sdkInt >= 24) {
    ui.run(function () {
        if (!content) {
            dialogs.build({
                //对话框标题
                title: "软件声明",
                //对话框内容
                content: "本款辅助，禁止用于一切商业违法用途，否则后果自负",
                //确定键内容
                positive: "同意",
                //取消键内容
                negative: "拒绝",
                //勾选框内容
                checkBoxPrompt: "不再提示"
            }).on("negative", () => {
                //监听确定键
                exit()
            }).on("positive", () => {
                //监听确定键
            }).on("check", (checked) => {
                //监听勾选框
                log(checked);
                storage.put("xd", checked);
            }).show()
        }
    })
} else {
    if (!content) {
        confirm("本款辅助，禁止用于违法用途，否则后果自负?")
            .then(clear => {
                if (clear) {
                    storage.put("xd", clear);
                }
            });
    }
}

var 线, 线1
function 悬浮() {
    //console.show()
    var window = floaty.window(
        <vertical w="*">

            <linear id="h" gravity="center">
                <button id="action" text="启动" textSize="20sp" />
            </linear>
            <linear id="h1" gravity="center">
                <button id="bt2" text="隐藏" textSize="20sp" />
            </linear>
            <linear id="h2" gravity="center">
                <button id="bt3" text="退出" textSize="20sp" />
            </linear>
        </vertical>
    );

    setInterval(() => { }, 1000);
    var execution = null;
    //记录按键被按下时的触摸坐标
    var x = 0, y = 0;
    //记录按键被按下时的悬浮窗位置
    var windowX, windowY;
    //记录按键被按下的时间以便判断长按等动作
    var downTime;
    window.action.setOnTouchListener(function (view, event) {
        switch (event.getAction()) {
            case event.ACTION_DOWN:
                x = event.getRawX();
                y = event.getRawY();
                windowX = window.getX();
                windowY = window.getY();
                downTime = new Date().getTime();
                return true;
            case event.ACTION_MOVE:
                //移动手指时调整悬浮窗位置
                window.setPosition(windowX + (event.getRawX() - x),
                    windowY + (event.getRawY() - y));
                //如果按下的时间超过1.5秒判断为长按，退出脚本
                if (new Date().getTime() - downTime > 30000) {
                    exit();
                }
                return true;
            case event.ACTION_UP:
                //手指弹起时如果偏移很小则判断为点击
                if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
                    onClick();
                }
                return true;
        }
        return true;
    }
    );
    window.bt2.click(() => {
        window.h.visibility = 8;
        window.h1.visibility = 8;
        window.h2.visibility = 8;
    });
    window.bt3.click(() => {
        toast("退出脚本")
        exit()

    });
    function onClick() {
        if (window.action.getText() == '启动') {
            线 = threads.start(主程序)
            // 线1 = threads.start(监控)
            window.action.setText('停止');
        } else {
            window.action.setText('启动');
            var 停止线程 = threads.start(停止脚本)
        }
    }
}

function 停止脚本() {
    toastLog("正常退出脚本")
    threads.shutDownAll()
}

function 监控() {

}

var 账号 = ""
var 密码 = ""
var 取验证码 = ""
var 链接 = ""
var 计数 = 0
var 限制
var newtext = ""
var 序号 = ""
var 环境路径 = ""
var 随机账号 = ""

function 主程序() {
    //sleep(5000)
    console.show()
    sleep(500)
    // 上传视频()
    //更换头像()
    //exit()
    if (!requestScreenCapture()) {
        toast("请求截图失败");
        exit();
    }
    sleep(1000)

    if (ui.ptxz.checked) {
        log("登号模式")
        登号模式()
    }

    if (ui.ptxz1.checked) {
        log("采集模式,请手动前往")
        采集模式()
    }

    if (ui.ptxz2.checked) {
        log("还原模式")
        还原模式()
    }
    if (ui.ptxz3.checked) {
        log("注册模式")
        注册模式()
    }
}

function 注册模式() {
    while (1) {
        if (打开抖音()) {
            if (注册前往登录()) {
                if (注册查看滑块()) {
                    if (注册打码()) {

                    } else {
                        xx("删除当前环境")
                        sleep(2000)
                    }
                }
            }
        }
        xx("新建环境")
    }
}

var 切换类型 = "切换到下一个环境"
function 还原模式() {
    var 是否删除 = 0
    while (1) {
        if (xx(切换类型)) {
            if (是否删除 == 1) {
                是否删除 = 0
                log("删除失败环境" + 序号)
                files.removeDir("/sdcard/xxsq/环境/" + 序号)
                sleep(1000)
            }
            if (打开抖音()) {
                var 弹窗 = text("OK").findOne(1000)
                if (弹窗) {
                    log(弹窗.click())
                }

                var 成功 = text("Sign up").clickable(true).findOne(2500)
                if (!成功) {
                    log("还远成功")
                    if (ui.gzyh.checked) {
                        log("关注操作")
                        限制 = random(Number(ui.gzsl.text()), Number(ui.gzsl1.text()))
                        if (关注操作()) {

                        } else {
                            //号被封了
                            序号 = xx("获取当前环境名称")
                            files.write("/sdcard/xxsq/失败环境.txt", 序号)
                            是否删除 = 1
                        }
                    }
                    if (ui.zlxg.checked) {
                        log("修改资料")
                        修改资料()
                    }
                    if (ui.ghtx.checked) {
                        log("更换头像")
                        更换头像()
                    }
                    if (ui.scsp.checked) {
                        log("上传视频")
                        上传视频()
                    }

                } else {
                    序号 = xx("获取当前环境名称")
                    files.write("/sdcard/xxsq/失败环境.txt", 序号)
                    是否删除 = 1
                }
            } else {
                序号 = xx("获取当前环境名称")
                files.write("/sdcard/xxsq/失败环境.txt", 序号)
                是否删除 = 1
            }
        }
        sleep(3000)
    }
}

function 登号模式() {
    while (1) {
        sleep(500)
        if (打开抖音()) {
            if (前往登录()) {
                if (查看滑块()) {
                    if (打码()) {
                        if (ui.gzyh.checked) {
                            log("关注操作")
                            限制 = random(Number(ui.gzsl.text()), Number(ui.gzsl1.text()))
                            关注操作()
                        }
                        if (ui.zlxg.checked) {
                            log("修改资料")
                            修改资料()
                        }
                        if (ui.scsp.checked) {
                            log("上传视频")
                            上传视频()
                        }
                        // 备份环境()
                    }
                }
            }
        }
        xx("新建环境")
    }
}




function 打开抖音() {
    if (!packageName(app.getPackageName("TikTok")).exists()) {
        app.launchApp("TikTok")
        sleep(random(3000, 4000))
    }
    for (var i = 0; i < 60; i++) {
        sleep(2000)
        if (text("Skip").clickable(true).exists() || text("Me").visibleToUser()) {
            log("启动完成")
            sleep(2000)
            break
        }
    }
    if (lh_find(text("Skip").clickable(true), "skip", 0)) {
        sleep(random(2000, 3000))
        if (lh_find(text("Start watching").clickable(true), "Start", 0, 5000)) {
            sleep(random(3000, 4000))
        }
    }
    for (var i = 0; i < 10; i++) {
        sleep(1000)
        if (packageName(app.getPackageName("TikTok")).exists()) {
            var 弹窗 = text("OK").findOne(500)
            if (弹窗) {
                log(弹窗.click())
                sleep(random(1000, 1500))
            }
            var me = text("Me").visibleToUser().findOne(1000)
            if (me) {
                随机滑动()
                sleep(1500)
                var 弹窗 = text("OK").findOne(500)
                if (弹窗) {
                    log(弹窗.click())
                    sleep(random(1000, 1500))
                }
                var me = text("Me").visibleToUser().findOne(1000)
                if (me) {
                    log("ok" + me.parent().click())
                    return true
                }
            }
        } else {
            app.launchApp("TikTok")
            sleep(random(5000, 6000))
            var me = text("Me").visibleToUser().findOne(10000)
            if (me) {
                随机滑动()
                sleep(1500)
                var me = text("Me").visibleToUser().findOne(1000)
                if (me) {
                    log("ok" + me.parent().click())
                    return true
                }
            }
        }
    }
}

function 前往登录() {
    var me = text("Me").visibleToUser().findOne(1000)
    if (me) {
        log("ok" + me.parent().click())
        sleep(random(1500, 2000))
    }
    if (lh_find(text("Sign up").clickable(true), "Sign ip", 0)) {
        if (lh_find(text("Already have an account? Log in").clickable(true), "Log in", 0)) {
            if (lh_find(text("Use phone / email / username"), "username", 0)) {
                if (lh_find(text("Email / Username"), "Email / Username", 0)) {
                    var 返回 = 读取账号()
                    sleep(400)
                    setText(1, 返回[0])
                    sleep(1000)
                    setText(2, 返回[1])
                    sleep(1000)
                    return true
                }
            }
        }
    } else {
        log("需要新建环境.")
        return false
    }

}


function 查看滑块() {
    if (lh_find(text("Log in").enabled(true).depth(11), "Log in", 1)) {
        sleep(1500)
        lh_find(text("Log in").enabled(true).depth(11), "Log in", 1)
        sleep(4000)
        var 频繁 = textContains("You are visiting our service too frequently").findOne(1000)
        if (频繁) {
            files.append("/sdcard/xxsq/登录频繁号.txt", 账号 + "\r\n")
            log("频繁了,")
            xx("删除当前环境")
            sleep(2000)
            return false
        }
        var 没网络 = textContains("No network connection").findOne(1000)
        if (没网络) {
            alert("没网络,脚本停止")
            exit()
        }
        var 密码错误 = textContains("account or password").enabled(true).findOne(1000)
        if (密码错误) {
            log("账号或者密码错误,切换账号")
            var 返回 = 读取账号()
            sleep(400)
            setText(1, 返回[0])
            sleep(1000)
            setText(2, 返回[1])
            sleep(2000)
            查看滑块()
        }
        for (var i = 0; i < 60; i++) {
            sleep(2000)
            if (desc("Refresh").exists() || text("Refresh").exists()) {
                log("加载图片中")
                sleep(2000)
                break
            }
            if (text("Me").visibleToUser().exists()) {
                log("直接登录成功了")
                return true
            }
        }
        if (lh_find(desc("Refresh"), "刷新", 1)) {
            sleep(3000)
            for (var i = 0; i < 60; i++) {
                sleep(2000)
                if (text("Loading...").exists()) {
                    log("加载图片中")
                }
                if (text("Network issue. Please try again.").exists()) {
                    lh_find(desc("Refresh"), "重新刷新", 1)
                    sleep(3000)
                }
                if (text("Network issue. Please try again.").exists() && text("Loading...").exists()) {

                } else {
                    log("完成")
                    return true
                }
            }

        }
    }
}

function 打码() {
    if (text("Me").visibleToUser().exists()) {
        log("直接登录成功了")
        return true
    }
    var 滑块范围 = indexInParent(1).depth(8).classNameEndsWith("view.View").findOne(2000)
    if (滑块范围) {
        var 坐标 = 滑块范围.bounds()
        var clip = images.clip(captureScreen(), 坐标.left, 坐标.top, 坐标.right - 坐标.left, 坐标.bottom - 坐标.top);
        log("截图打码")
        var 返回 = 联众打码("lbh886633", "Libinhao886633", clip)
        if (返回) {
            返回 = Number(返回.split(",")[0]) + 坐标.left - 20
            log(返回)
            var 起点 = depth(12).classNameEndsWith("Image").findOne(1000);
            if (起点) {
                log("正在滑动")
                var 起点坐标 = 起点.bounds()
                swipe(起点坐标.centerX(), 起点坐标.centerY(), 返回 + (起点坐标.right - 起点坐标.left), 起点坐标.centerY(), 1000)
                sleep(5000)
                var 密码错误 = textContains("account or password").enabled(true).findOne(1000)
                if (密码错误) {
                    log("账号或者密码错误,切换账号")
                    var 返回 = 读取账号()
                    sleep(400)
                    setText(1, 返回[0])
                    sleep(1000)
                    setText(2, 返回[1])
                    sleep(2000)
                    查看滑块()
                }
                var 还在 = desc("Refresh").findOne(1000)
                var 还在a = text("Refresh").findOne(300)
                if (还在 || 还在a) {
                    log("继续打码")
                    打码()
                }
                var 频繁 = textContains("You are visiting our service too frequently").findOne(1000)
                if (频繁) {
                    files.append("/sdcard/xxsq/登录频繁号.txt", 账号 + "\r\n")
                    log("打码后频繁了,")
                    xx("删除当前环境")
                    sleep(2000)
                    return false
                }
                var 登录 = text("Log in").enabled(true).depth(11).findOne(1000)
                if (登录) {
                    log("滑块失败.重新获取")
                }
                if (text("Me").visibleToUser().findOne(1000)) {
                    log("登录成功了")
                    return true
                }
            }
        }
    }
}


function 读取账号() {
    if (!files.exists("/sdcard/xxsq/邮箱.txt")) {
        alert("没有找到 邮箱.txt")
        exit()
    }
    var 读取 = files.read("/sdcard/xxsq/邮箱.txt")
    if (读取) {
        var 分割 = 读取.split("\r\n")
        var 账号a = 分割[0].split("，")
        账号 = 账号a[0]
        密码 = 账号a[1]
        log(账号a[0])
        log(账号a[1])
        log("删除数据 " + 分割.splice(0, 1))
        newtext = 分割.join('\r\n');
        files.write("/sdcard/xxsq/邮箱.txt", newtext);
        return 账号a
    } else {
        alert("没号了,脚本停止")
        exit()
    }
}


function 随机滑动() {
    var x = device.width / 2 + random(-20, 20)
    var y = device.height * 0.8
    var x1 = device.width / 2 + random(-20, 20)
    var y1 = device.height * 0.1
    swipe(x, y, x1, y1, random(1000, 1200))

}


function lh_find(obj, msg, dj, time) {
    sleep(random(100, 150))
    time = time || 2500
    var 结果 = obj.findOne(time)
    if (结果) {
        if (dj == 1) {
            if (lh_范围点击(结果.bounds(), msg)) return true
        } else {
            if (msg) {
                console.log(msg)
            }
            if (结果.click()) {
                return true
            } else if (结果.parent().click()) {
                return true
            } else if (结果.parent().parent().click()) {
                return true
            } else {
                console.log("无指针失败->" + msg)
            }
        }
    } else {
        if (msg) {
            console.log("没找到 " + msg)
        } else {
            console.log("没找到 ")
        }
    }
}


function lh_范围点击(x, y, x1, y1, msg) {
    if (typeof x == "object") {
        var x坐标 = random(Number(x.left) + 3, Number(x.right) - 3)
        var y坐标 = random(Number(x.top) + 3, Number(x.bottom) - 3)
        console.log(y + " " + x坐标 + " " + y坐标)
    } else {
        msg = msg || ""
        var x坐标 = random(x - 3, x1 - 3)
        var y坐标 = random(y + 3, y1 - 3)
        console.log(msg + " " + x坐标 + " " + y坐标)
    }
    sleep(random(900, 1000))
    return click(x坐标, y坐标)
}



//////////////


function 采集模式() {
    var 新增評論 = text("Add comment...").visibleToUser().findOne()
    if (新增評論) {
        log("新增評論")
        sleep(random(1500, 2000))
        var 次数 = Number(ui.cjlj.text())
        for (var i = 0; i < 次数; i++) {
            if (!packageName(getPackageName("TikTok")).exists()) {
                app.launch(getPackageName("TikTok"))
                sleep(4000)
            }
            var 油滑 = visibleToUser().scrollable(true).classNameEndsWith("DmtViewPager$c").scrollForward()
            sleep(random(2000, 2500))
            var 更多 = classNameEndsWith("ImageView").drawingOrder(3).visibleToUser().findOne(5000)
            if (更多) {
                log("更多 " + 更多.click())
                var 複製連結 = text("Copy link").visibleToUser().findOne(5000)
                if (複製連結) {
                    log("複製連結 " + 複製連結.parent().click())
                    var 内容 = getClip()
                    if (/tiktok.com/.test(内容)) {
                        log("写入 " + 内容 + " 进度" + (i + 1) + "/" + 次数)
                        files.append("/sdcard/xxsq/链接.txt", 内容 + "\n")
                    } else {
                        log("不符合")
                    }
                }
            }
            采集返回()
            sleep(500)
            var 下滑 = visibleToUser().scrollable(true).classNameEndsWith("ViewPager").scrollForward()
            sleep(1200)
        }
    }
}

function 采集返回() {
    log("采集返回")
    for (var i = 0; i < 5; i++) {
        sleep(1000)
        if (idContains("e5q").visibleToUser().findOne(500) || text("Add comment...").visibleToUser().findOne(100)) {
            log("采集成功")
            break
        } else {
            back()
        }
    }

}



////////////////////////////////////////////
function 关注操作() {
    //返回首页()
    app.openUrl(取链接())
    //app.openUrl("https://vt.tiktok.com/ZSmpxv1W/")
    var 打卡方式 = text("TikTok").visibleToUser().findOne(3000)
    if (打卡方式) {
        log("选择抖音 " + 打卡方式.parent().parent().click())
        sleep(1500)
    }
    var 始终 = text("始终").visibleToUser().findOne(3000)
    if (始终) {
        log("始终 " + 始终.click())
    }
    sleep(random(5000, 6000))
    var 粉絲a = text("Followers").drawingOrder(2).visibleToUser().findOne(20000)
    var 粉絲 = text("Followers").drawingOrder(2).visibleToUser().findOne(2000)
    if (粉絲) {
        sleep(random(5000, 6000))
        log("进入粉丝 " + 粉絲.parent().click())
        sleep(random(4000, 5000))
        var 按讚 = textContains("Likes").drawingOrder(2).visibleToUser().findOne(1000)
        if (!按讚) {
            log("进入粉丝列表成功")
            while (/* 1 */ 计数 >= 限制) {
                var 关注 = text("Follow").visibleToUser().find()
                for (var i = 0; i < 关注.length; i++) {
                    计数++
                    log("关注 " + 关注[i].click() + " 进度" + 计数 + "/" + 限制)
                    if (计数 >= 限制) {
                        // 计数 = 0
                        log("到达" + 限制 + "个关注了")
                        // return true
                        break
                    }
                    var 关注间隔 = random(Number(ui.gzjg.text()), Number(ui.gzjg1.text()))
                    sleep(关注间隔)
                }
                if(计数 >= 限制) break
                var 封号了 = textContains("Your account was logged out. Try logging in again.").findOne(500)
                if (封号了) {
                    log("号被封了!")
                    return false
                }
                sleep(1000)
                var 滑动 = depth(9).visibleToUser().scrollForward()
                if (滑动) {
                    log("到底了,换个链接")
                    关注操作()
                }
                sleep(2000)
                log("滑动 " + 滑动)
            }
        } else {
            log("进入粉丝列表失败")
            关注操作()
        }
        计数 = 0
    }
}

function 取链接() {
    if (!files.exists("/sdcard/xxsq/链接.txt")) {
        alert("没有找到 链接.txt")
        exit()
    }
    var 读取 = files.read("/sdcard/xxsq/链接.txt")
    if (读取) {
        var 分割 = 读取.split("\n")
        链接 = 分割[0]
        log("删除数据 " + 分割.splice(0, 1))
        var newtext = 分割.join('\n');
        files.write("/sdcard/xxsq/链接.txt", newtext);
        return 链接
    } else {
        alert("没链接了,脚本停止")
        exit()
    }
}

function 返回首页() {
    log("返回首页中..")
    for (var i = 0; i < 10; i++) {
        if (packageName(getPackageName("TikTok")).visibleToUser().exists()) {
            sleep(1000)
            if (text("Home").visibleToUser().exists() && text("Me").visibleToUser().exists()) {
                break
            } else {
                back()
                sleep(500)
            }
            var 推出 = text("QUIT").visibleToUser().findOne(200)
            if (推出) {
                推出.click()
            }
        } else {
            log("启动app")
            sleep(2000)
            app.launch(getPackageName("TikTok"))
            sleep(5000)
        }
    }
}

///////////////////////////

function 上传视频() {
    var 话题内容 = ui.htbt.text()
    var at = ui.atyh.text()
    var 上传次数 = Number(ui.scsl.text())
    for (var i = 0; i < 上传次数; i++) {
        返回首页()
        sleep(1000)
        var 拍摄 = classNameEndsWith("FrameLayout").clickable(true).depth(8).drawingOrder(3).findOne()
        if (拍摄) {
            移动文件("/sdcard/xxsq/2/", "/sdcard/xxsq/视频/")
            sleep(random(2000, 3000))
            log("拍摄 " + 拍摄.click())
            sleep(random(2000, 3000))
            var 允許 = text("允许").clickable(true).findOne(1000)
            if (允許) {
                log("允許 " + 允許.click())
                sleep(random(1000, 1500))
                var 允許 = text("允许").clickable(true).findOne(1000)
                if (允許) {
                    log("允許 " + 允許.click())
                    sleep(random(1000, 1500))
                    var 允許 = text("允许").clickable(true).findOne(1000)
                    if (允許) {
                        log("允許 " + 允許.click())
                        sleep(random(1000, 1500))
                    }
                }
            }
            var 上傳 = text("Upload").visibleToUser().findOne()
            if (上傳) {

                log("上傳 " + 上傳.parent().parent().click())
                sleep(random(2000, 3000))
                var All = text("All").visibleToUser().findOne()
                if (All) {
                    log("All " + All.parent().click())
                    sleep(random(1500, 2000))
                    var 视频 = text("视频").visibleToUser().findOne()
                    if (视频) {
                        log("视频 " + 视频.parent().click())
                        sleep(random(1500, 2000))
                    }
                }
                var 影片 = text("Videos").visibleToUser().findOne()
                if (影片) {
                    log("影片 " + 影片.parent().click())
                    sleep(random(1500, 2000))
                }
                var 选择 = classNameEndsWith("FrameLayout").clickable(true).visibleToUser().findOne(2000)
                if (选择) {
                    log("选择 " + 选择.click())
                    sleep(random(1500, 2000))
                    var 下一步 = text("Next").visibleToUser().clickable(true).findOne(5000)
                    if (下一步) {
                        log("下一步 " + 下一步.click())
                        sleep(random(5000, 7000))
                        var 下一步 = text("Next").visibleToUser().clickable(true).findOne(60000)
                        if (下一步) {
                            log("下一步 " + 下一步.click())
                            sleep(random(2000, 3000))
                            var Voiceover = text("Voiceover").visibleToUser().findOne(60000)
                            if (Voiceover) {
                                sleep(random(2000, 3000))
                                var 下一步 = text("Next").visibleToUser().clickable(true).findOne(3000)
                                if (下一步) {
                                    log("下一步 " + 下一步.click())
                                    sleep(random(3000, 4000))
                                }
                            }
                        }
                    }
                    var 编辑框 = classNameEndsWith("EditText").visibleToUser().findOne(5000)
                    if (编辑框) {
                        sleep(1000)
                        setText(话题内容)
                        sleep(random(1000, 1500))
                        var 好友 = text("Friends").visibleToUser().findOne(5000)
                        if (好友) {
                            log("好友 " + 好友.click())
                            sleep(random(1500, 2000))
                            setText(at)
                            sleep(random(5000, 6000))
                            var 第一个 = classNameEndsWith("LinearLayout").visibleToUser().clickable(true).findOne(5000)
                            if (第一个) {
                                log("第一个 " + 第一个.click())
                                sleep(random(1500, 2000))
                            }
                            var 没用户 = textContains("No more update").visibleToUser().findOne(500)
                            if (没用户) {
                                log("没用户 " + back())
                                sleep(random(1500, 2000))
                            }
                            var 發佈 = text("Post").visibleToUser().depth(10).findOne(500)
                            if (!發佈) {
                                log("选择失败 " + back())
                                sleep(random(1500, 2000))
                            }
                        }
                    }
                    var 去往封面 = text("Select cover").clickable(true).findOne(2000)
                    if (去往封面) {
                        log("去往封面 " + 去往封面.click())
                        sleep(5000)
                        var 封面 = classNameEndsWith("ImageView").idContains("bg6").find()
                        if (封面.length > 5) {
                            var 坐标 = 封面[2].bounds()
                            click(坐标.centerX(), 坐标.centerY())
                            sleep(random(1500, 2000))
                        }
                        var 保存 = text("Save").clickable(true).findOne(2000)
                        if (保存) {
                            log("保存 " + 保存.click())
                            sleep(random(1800, 2000))
                        }
                    }
                    var 發佈 = text("Post").visibleToUser().depth(10).findOne(5000)
                    if (發佈) {
                        var 儲存到裝置中開啟 = desc("Save to deviceOn").visibleToUser().clickable(true).findOne(2000)
                        if (儲存到裝置中開啟) {
                            log("儲存到裝置中開啟 " + 儲存到裝置中開啟.click())
                            sleep(random(1000, 1500))
                        }
                        log("發佈 " + 發佈.parent().parent().click() + "进度 " + (i + 1) + "/" + 上传次数)
                        sleep(random(15000, 20000))
                        while (1) {
                            sleep(3000)
                            var 上传中 = textContains("%").visibleToUser().findOne(1000)
                            if (上传中) {
                                log("上传中 " + 上传中.text())
                            } else {
                                log("上传完成....")
                                break
                            }
                        }
                    }
                } else {
                    log("没找到视频序号,放弃本次上床")
                    exit()
                }
            }
        }
    }
}

function 修改资料() {
    var 网站 = ui.wz.text()
    var 简介 = ui.jj.text()
    返回首页()
    var 我 = text("Me").findOne()
    if (我) {
        log("Me " + 我.parent().click())
        sleep(random(1000, 1500))
    }
    var 右上角 = classNameEndsWith("RelativeLayout").drawingOrder(7).clickable(true).findOne(2000)
    if (右上角) {
        log("右上角 " + 右上角.click())
        sleep(random(1000, 1500))
        var 管理我的帳號 = textContains("account").visibleToUser().findOne(2000)
        if (管理我的帳號) {
            log("管理我的帳號 " + 管理我的帳號.parent().parent().click())
            sleep(random(1000, 1500))
            var 切換到專業帳號 = text("Switch to Pro Account").visibleToUser().findOne(2000)
            if (切換到專業帳號) {
                log("切換到專業帳號 " + 切換到專業帳號.parent().parent().click())
                sleep(random(1000, 1500))
                var 下一步 = text("Business").visibleToUser().findOne(60000)
                if (下一步) {
                    log("下一步 " + 下一步.parent().findOne(text("Next")).click())
                    sleep(random(2000, 3000))
                    for (var i = 0; i < 3; i++) {
                        log(scrollable(true).scrollForward())
                        sleep(1500)
                    }
                    var 購物 = textContains("Shopping/").findOne(1500)
                    if (購物) {
                        var 坐标 = 購物.bounds()
                        click(坐标.centerX(), 坐标.centerY())
                        sleep(random(1000, 1500))
                    }
                    // var 購物 = desc("Education").visibleToUser().findOne(2000)
                    // if (購物) {
                    //     log("購物 " + lh_范围点击(購物.bounds()))
                    //     sleep(random(1000, 1500))
                    // } else {
                    //     var 購物 = desc("Shopping/Retail").findOne(1500)
                    //     if (購物) {
                    //         var 坐标 = 購物.bounds()
                    //         click(坐标.centerX(), 坐标.centerY())
                    //         sleep(random(1000, 1500))
                    //     }
                    // }
                    lh_find(text("Next"), "Next", 1, 5000)
                    sleep(random(3000, 4000))
                }
            } else {
                log("切换不到专业账号或者已经是专业了")
                返回首页()
            }
        }
    }
    var 編輯個人檔案 = textContains("Edit ").visibleToUser().findOne(2000)
    if (編輯個人檔案) {
        log("編輯個人檔案 " + 編輯個人檔案.click())
        sleep(random(1000, 1500))
        var 網站 = text("Website").visibleToUser().findOne(2000)
        if (網站) {
            log("網站 " + 網站.parent().parent().click())
            sleep(random(1500, 2000))

            setText(网站)
            sleep(1000)
            var 儲存 = text("Save").visibleToUser().clickable(true).findOne(2000)
            if (儲存) {
                log("儲存 " + 儲存.click())
                sleep(random(2000, 2500))
            } else {
                var 后退 = text("Cancel").visibleToUser().clickable(true).findOne(2000)
                if (后退) {
                    log("后退 " + 后退.click())
                    sleep(random(2000, 2500))
                }
            }
        }
        var 個人簡介 = text("Bio").visibleToUser().findOne(2000)
        if (個人簡介) {
            log("個人簡介 " + 個人簡介.parent().parent().click())
            sleep(random(1500, 2000))

            setText(简介)
            sleep(1000)
            var 儲存 = text("Save").visibleToUser().clickable(true).findOne(2000)
            if (儲存) {
                log("儲存 " + 儲存.click())
                sleep(random(1500, 2000))
            } else {
                var 后退 = text("Cancel").visibleToUser().clickable(true).findOne(2000)
                if (后退) {
                    log("后退 " + 后退.click())
                    sleep(random(2000, 2500))
                }
            }
        }

        // var 照片 = classNameEndsWith("ImageView").depth(11).visibleToUser().clickable(true).findOne(2000)
        // if (照片) {
        //     移动文件("/sdcard/xxsq/1/", "/sdcard/xxsq/图片/")
        //     sleep(random(2000, 2500))
        //     log("照片 " + 照片.click())
        //     sleep(random(2000, 2500))
        //     var 從圖庫中選取 = text("Select from Gallery").findOne(2000)
        //     if (從圖庫中選取) {
        //         log("從圖庫中選取 " + 從圖庫中選取.click())
        //         sleep(random(1000, 1500))
        //         var 允許 = text("允许").clickable(true).findOne(1000)
        //         if (允許) {
        //             log("允許 " + 允許.click())
        //             sleep(random(1000, 1500))
        //         }
        //         //console.hide()
        //         var 全部 = text("All media").visibleToUser().findOne(2000)
        //         if (全部) {
        //             log("全部 " + 全部.click())
        //             sleep(random(1000, 1500))
        //             var 图片 = text("图片").findOne(2000)
        //             if (图片) {
        //                 log("图片 " + 图片.parent().click())
        //                 sleep(random(1000, 1500))
        //                 var 第一张 = classNameEndsWith("view.View").visibleToUser().clickable(true).findOne(2000)
        //                 if (第一张) {
        //                     log("第一张 " + 第一张.click())
        //                     sleep(random(1000, 1500))
        //                     var 确定 = text("Confirm").clickable(true).visibleToUser().findOne(2000)
        //                     if (确定) {
        //                         log("确定 " + 确定.click())
        //                         sleep(random(1000, 1500))
        //                         var 儲存 = text("Save").clickable(true).visibleToUser().findOne(2000)
        //                         if (儲存) {
        //                             log("儲存 " + 儲存.click())
        //                             sleep(random(3000, 4000))
        //                             for (let index = 0; index < 30; index++) {
        //                                 sleep(2000)
        //                                 if (!text("Uploading...").exists()) {
        //                                     log("更新头像完成")
        //                                     break
        //                                 }
        //                             }
        //                         }
        //                     }
        //                 }
        //             } else {
        //                 log("2222")
        //             }
        //         }
        //         //console.show()
        //     }
        // }
    }
}

function 更换头像() {
    返回首页()
    var 我 = text("Me").findOne()
    if (我) {
        log("Me " + 我.parent().click())
        sleep(random(1000, 1500))
    }
    var 編輯個人檔案 = textContains("Edit ").visibleToUser().findOne(2000)
    if (編輯個人檔案) {
        log("編輯個人檔案 " + 編輯個人檔案.click())
        sleep(random(1000, 1500))
        var 照片 = classNameEndsWith("ImageView").depth(11).visibleToUser().clickable(true).findOne(2000)
        if (照片) {
            移动文件("/sdcard/xxsq/1/", "/sdcard/xxsq/图片/")
            sleep(random(2000, 2500))
            log("照片 " + 照片.click())
            sleep(random(2000, 2500))
            var 從圖庫中選取 = text("Select from Gallery").findOne(2000)
            if (從圖庫中選取) {
                log("從圖庫中選取 " + 從圖庫中選取.click())
                sleep(random(1000, 1500))
                var 允許 = text("允许").clickable(true).findOne(1000)
                if (允許) {
                    log("允許 " + 允許.click())
                    sleep(random(1000, 1500))
                }
                //console.hide()
                var 全部 = text("All media").visibleToUser().findOne(2000)
                if (全部) {
                    log("全部 " + 全部.click())
                    sleep(random(1000, 1500))
                    var 图片 = text("图片").findOne(2000)
                    if (图片) {
                        log("图片 " + 图片.parent().click())
                        sleep(random(1000, 1500))
                        var 第一张 = classNameEndsWith("view.View").visibleToUser().clickable(true).findOne(2000)
                        if (第一张) {
                            log("第一张 " + 第一张.click())
                            sleep(random(1000, 1500))
                            var 确定 = text("Confirm").clickable(true).visibleToUser().findOne(2000)
                            if (确定) {
                                log("确定 " + 确定.click())
                                sleep(random(1000, 1500))
                                var 儲存 = text("Save").clickable(true).visibleToUser().findOne(2000)
                                if (儲存) {
                                    log("儲存 " + 儲存.click())
                                    sleep(random(3000, 4000))
                                    for (let index = 0; index < 30; index++) {
                                        sleep(2000)
                                        if (!text("Uploading...").exists()) {
                                            log("更新头像完成")
                                            break
                                        }
                                    }
                                }
                            }
                        }
                    } else {
                        log("2222")
                    }
                }
                //console.show()
            }
        }
    }

}

/////////////////////////////////////////////////////////////////////



function 还原环境() {
    for (var i = 0; i < 2; i++) {
        try {
            if (!packageName("com.yztc.studio.plugin").exists()) {
                log("APP异常消失了,重新启动")
                app.launchApp("抹机王")
                var 一键新机 = text("一键抹机/一键新机").findOne(120000)
                if (一键新机) {

                }
            }
            var 路径 = 环境路径 + 序号
            var 还远 = http.get("http://127.0.0.1:8181/api?reqCode=7002&configDir=" + 路径)
            if (还远) {
                var res = 还远.body.string()
                log(res)
                if (/成功/.test(res)) {
                    res = JSON.parse(res)
                    while (1) {
                        sleep(5000)
                        var api查询 = http.get("http://127.0.0.1:8181/api?reqCode=7011&taskId=" + res['Data']['TaskId']).body.string()
                        log(api查询)

                        if (/任务异常/.test(api查询)) {
                            log("任务异常,切换下个环境")
                            序号 = 取环境()
                            break
                        }
                        if (/一键还原成功/.test(api查询)) {
                            log("一键还原成功")
                            return true
                        }

                        // if (/任务正在运行/.test(api查询)) {
                        //     log("任务正在运行")
                        //     break
                        // }
                        if (/失败/.test(api查询) || /-异常/.test(api查询)) {
                            log("失败或者-异常")
                            break
                        } else {
                            var w = JSON.parse(api查询)
                            if (w['Data']['WarningMsg'] && w['Data']['WarningMsg'].length > 0) {
                                log(w['Data']['WarningMsg'])
                                break
                            }
                            if (/成功/.test(api查询)) {
                                log("成功")
                                return true
                            }
                        }
                        if (!packageName("com.yztc.studio.plugin").exists()) {
                            log("APP异常消失了,重新启动")
                            app.launchApp("抹机王")
                            var 一键新机 = text("一键抹机/一键新机").findOne(120000)
                            if (一键新机) {

                            }
                            break
                        }
                    }
                }
            }
        } catch (error) {
            log(error)
        }

    }
}


function 写入环境() {
    if (!files.exists("/sdcard/xxsq/环境.txt")) {
        var arr = files.listDir(环境路径);
        log("环境数量 " + arr.length);
        if (arr.length > 0) {
            var newtext = arr.join('\n');
            files.write("/sdcard/xxsq/环境.txt", newtext)
        }
    }
}



function 取环境() {
    if (!files.exists("/sdcard/xxsq/环境.txt")) {
        alert("没有找到 环境.txt")
        exit()
    }
    var 读取 = files.read("/sdcard/xxsq/环境.txt")
    if (读取) {
        var 分割 = 读取.split("\n")
        var 环境 = 分割[0]
        log("删除数据 " + 分割.splice(0, 1))
        var newtext = 分割.join('\n');
        files.write("/sdcard/xxsq/环境.txt", newtext);
        return 环境
    } else {
        log("没环境了,重新写入 " + files.removeDir("/sdcard/xxsq/环境.txt"))
        删除失败()
        写入环境()
    }
}

function 删除失败() {
    //var 环境路径 = "/sdcard/xxsq/studioplugin/wipeKing/env/2020-08/29/"
    if (!files.exists(环境路径)) {
        alert("环境路径出错了.请检查")
        return false
    }
    if (!files.exists("/sdcard/xxsq/失败环境.txt")) {
        log("没失败环境删除,跳过")
        return false
    }
    var 读取 = files.read("/sdcard/xxsq/失败环境.txt")
    if (读取) {
        读取 = 读取.split("\n")
        if (读取[i]) {
            if (files.exists(环境路径 + 读取[i])) {
                log("删除 " + 环境路径 + 读取[i])
                files.removeDir(环境路径 + 读取[i])
                sleep(100)
            }
        }
        files.removeDir("/sdcard/xxsq/失败环境.txt")
    }
}

/////////////////////////////////////////////////


function 注册前往登录() {
    for (var i = 0; i < 2; i++) {
        var me = text("Me").visibleToUser().findOne(1000)
        if (me) {
            log("ok" + me.parent().click())
            sleep(1500)
        }

        if (lh_find(text("Sign up").clickable(true), "Sign ip", 0)) {
            if (lh_find(text("Use phone or email"), "Use phone or email", 0)) {
                sleep(2000)
                var 生日 = text("When’s your birthday?").visibleToUser().findOne(2000)
                if (生日) {
                    for (var ii = 1; ii < 3; ii++) {
                        var 年 = depth(8).drawingOrder((ii + 1)).classNameEndsWith("view.View").findOne(1000)
                        if (年) {
                            var 坐标 = 年.bounds()
                            for (var i = 0; i < random(3, 4); i++) {
                                swipe(坐标.centerX(), 坐标.centerY(), 坐标.centerX(), device.height, 500)
                                sleep(1500)
                            }
                        }
                    }
                    if (lh_find(text("Next"), "Next", 0)) {

                    }
                }
                if (lh_find(text("Email").id("android:id/text1"), "Email", 0, 15000)) {
                    sleep(2000)
                    //随机账号 = lh_randomStr(10, 15) + "@qq.com"
                    随机账号 = 取注册()
                    log(随机账号 + " " + setText(随机账号))
                    sleep(1000)
                    if (lh_find(depth(11).text("Next"), "Next")) {
                        sleep(4000, 5000)
                        while (1) {
                            sleep(1500)
                            var 等待 = depth(11).drawingOrder(2).classNameEndsWith("view.View").visibleToUser().findOne(500)
                            if (等待) {
                                log("等待")
                            } else {
                                break
                            }
                        }
                        return true
                    }
                }
            }
        } else {
            log("已有用户登录了")
            break
        }
    }
}


function 注册查看滑块() {
    for (var i = 0; i < 60; i++) {
        log("2222")
        sleep(1500)
        // if (text("Refresh").clickable(true).exists()) {
        if (desc("Refresh").exists() || text("Refresh").exists()) {
            log("加载图片中")
            sleep(2000)
            break
        }
        if (text("Me").visibleToUser().exists()) {
            log("直接登录成功了")
            return true
        }
        var 没网络 = textContains("No network connection").findOne(500)
        if (没网络) {
            alert("没网络,脚本停止")
            exit()
        }
        var 没网络 = textContains("error").findOne(500)
        if (没网络) {
            click("FeedBack")
            sleep(2000)
            lh_find(depth(11).text("Next"), "Next")
        }
    }
    if (lh_find(desc("Refresh"), "刷新", 1)) {
        sleep(5000)
        for (var i = 0; i < 60; i++) {
            sleep(2000)
            if (text("Loading...").exists()) {
                log("加载图片中")
            }
            if (text("Network issue. Please try again.").exists()) {
                lh_find(desc("Refresh"), "重新刷新", 1)
                sleep(3000)
            }
            if (text("Network issue. Please try again.").exists() && text("Loading...").exists()) {

            } else {
                log("完成")
                return true
            }
        }
    }
}

function 注册打码() {
    for (var ii = 0; ii < 3; ii++) {
        if (text("Me").visibleToUser().exists()) {
            log("注册成功了")
            return true
        }
        //var 滑块范围 = indexInParent(2).depth(6).classNameEndsWith("view.View").findOne(2000)
        var 滑块范围 = indexInParent(1).depth(8).classNameEndsWith("view.View").findOne(2000)

        if (滑块范围) {
            var 坐标 = 滑块范围.bounds()
            var clip = images.clip(captureScreen(), 坐标.left, 坐标.top, 坐标.right - 坐标.left, 坐标.bottom - 坐标.top);
            log("截图打码")
            var 返回 = 联众打码("lbh886633", "Libinhao886633", clip)
            if (返回) {
                返回 = Number(返回.split(",")[0]) + 坐标.left - 20
                log(返回)
                var 起点 = depth(12).classNameEndsWith("Image").findOne(1000);
                if (起点) {
                    log("正在滑动")
                    var 起点坐标 = 起点.parent().parent().bounds()
                    swipe(起点坐标.centerX(), 起点坐标.centerY(), 返回 + (起点坐标.centerX() - 起点坐标.left), 起点坐标.centerY(), 1000)
                    sleep(6000)
                    var 还在 = desc("Refresh").findOne(1500)
                    var 还在a = text("Refresh").findOne(300)
                    if (还在 || 还在a) {
                        log("刷新继续打码 " + 还在.click())
                        sleep(3000)
                        for (var i = 0; i < 60; i++) {
                            sleep(2000)
                            if (text("Loading...").exists()) {
                                log("加载图片中")
                            }
                            if (text("Network issue. Please try again.").exists()) {
                                lh_find(desc("Refresh"), "重新刷新", 1)
                                sleep(3000)
                            }
                            if (text("Network issue. Please try again.").exists() && text("Loading...").exists()) {

                            } else {
                                log("完成")
                                break
                            }
                        }
                    } else {
                        var 设置密码 = text("Create password").visibleToUser().findOne(2000)
                        if (设置密码) {
                            log("设置密码 " + setText(ui.szmm.text()))
                            sleep(2000)
                            //You are visiting our service too frequently.
                            var Next = text("Next").visibleToUser().findOne(1000)
                            if (Next) {
                                log("Next " + Next.parent().parent().click())
                                sleep(5000)
                                var 频繁 = textContains("You are visiting our service too frequently").findOne(1000)
                                if (频繁) {
                                    files.append("/sdcard/xxsq/注册频繁号.txt", 随机账号 + "\r\n")
                                    log("频繁了,")
                                    return false
                                }
                                var 需要验证 = textContains("Enter 6-digit code").visibleToUser().findOne(1000)
                                if (需要验证) {
                                    log("需要验证,")
                                    return false
                                }
                                //text = Login failedtext = Sign up
                                sleep(5000)
                                var 成功 = text("Sign up").visibleToUser().findOne(1200)
                                if (成功) {
                                    if (lh_find(text("Sign up").depth(8).visibleToUser(), "注册成功了lh", 0, 5000)) {
                                        sleep(6000)
                                        return true
                                    }
                                }
                                if (lh_find(text("Skip").clickable(true), "skip", 0, 5000)) {
                                    if (text("Me").visibleToUser().findOne(5000)) {
                                    }
                                    log("注册成功了")
                                    return true
                                }
                                // if (lh_find(text("Skip").clickable(true), "skip", 0, 5000)) {


                                //     if (text("Me").visibleToUser().findOne(5000)) {

                                //     }
                                //     log("注册成功了")
                                //     return true
                                // }

                            }
                        }
                        var 登录失败 = text("Login failed").visibleToUser().findOne(1000)
                        if (登录失败) {
                            log("登录失败,")
                            return false
                        }
                        var 访问频繁 = text("You are visiting our service too frequently.").visibleToUser().findOne(1000)
                        if (访问频繁) {
                            log("访问频繁,")
                            return false
                        }
                        var 成功 = text("Sign up").visibleToUser().findOne(1200)
                        if (成功) {
                            if (lh_find(text("Sign up").depth(8).visibleToUser(), "注册成功了lha", 0, 5000)) {
                                sleep(6000)
                                return true
                            }
                        }
                    }
                }
            }
        }
    }
}

function 取注册() {
    if (!files.exists("/sdcard/xxsq/zhuce.txt")) {
        alert("没有找到 zhuce.txt")
        exit()
    }
    var 读取 = files.read("/sdcard/xxsq/zhuce.txt")
    if (读取) {
        var 分割 = 读取.split("\r\n")
        var 账号a = 分割[0].split("，")
        账号 = 账号a[0]
        密码 = 账号a[1]
        log(账号a[0])
        log(账号a[1])
        log("删除数据 " + 分割.splice(0, 1))
        newtext = 分割.join('\r\n');
        files.write("/sdcard/xxsq/zhuce.txt", newtext);
        return 账号a[0]
    } else {
        alert("没号了,脚本停止")
        exit()
    }
}

function lh_randomStr(mix, max) {
    var seed = new Array('abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789');
    var idx, i;
    var result = '';
    for (i = 0; i < random(mix, max); i++) {
        idx = Math.floor(Math.random() * 3);
        result += seed[idx].substr(Math.floor(Math.random() * (seed[idx].length)), 1);
    }
    return result;
}

function 联众打码(username, password, img) {
    //1318
    http.__okhttp__.setTimeout(3e4);
    var r = images.toBase64(img, format = "png"),
        i = device.release,
        c = device.model,
        s = device.buildId;
    try {
        var n = http.postJson("https://v2-api.jsdama.com/upload", {
            softwareId: 20856,
            softwareSecret: "01ZiVevmC6iDQsccEcrMI5ZwcjNLuTh0OWG8JGN9",
            username: username,
            password: password,
            captchaData: r,
            captchaType: 1318,
            captchaMinLength: 1,
            captchaMaxLength: 1,
            workerTipsId: 0
        }, {
            headers: {
                "User-Agent": "Mozilla/5.0 (Linux; Android " + i + "; " + c + " Build/" + s + "; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36",
            }
        });
    } catch (e) {
        return {
            code: "-1",
            msg: "网络链接超时...",
            data: {}
        };
    }
    var d = n.body.json(),
        p = d.code,
        m = d.message;
    if ("10079009" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142006" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142004" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142005" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10079006" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("0" == p) {
        return d.data.recognition
        // return {
        //     code: p,
        //     msg: m,
        //     data: {
        //         res: d.data.recognition
        //     }
        // };
    }
    return d;
}


function xx(cmd) {
    //剩余时间不足或者连接数不够了
    if (!packageName(app.getPackageName("xx抹机神器")).exists()) {
        app.launchApp("xx抹机神器")
        sleep(random(5000, 6000))
    }
    files.write("/data/data/zpp.wjy.xxsq/share/cmd.txt", cmd)
    sleep(1000)
    while (1) {
        var result = files.read("/data/data/zpp.wjy.xxsq/share/cmd_return.txt")
        log(result + " " + cmd)
        if (/正在处理/.test(result)) {

        } else if (/没有环境了/.test(result)) {
            if (切换类型 == "切换到下一个环境") {
                切换类型 = "切换到上一个环境"
                cmd = 切换类型
                files.write("/data/data/zpp.wjy.xxsq/share/cmd.txt", 切换类型)
                sleep(2000)
            } else {
                if (切换类型 == "切换到上一个环境") {
                    切换类型 = "切换到下一个环境"
                    cmd = 切换类型
                    files.write("/data/data/zpp.wjy.xxsq/share/cmd.txt", 切换类型)
                    sleep(2000)
                }
            }
        } else if (/剩余时间不足或者连接数不够了/.test(result)) {
            exit()
        } else {

            return result
        }
        sleep(3000)
    }
}


function 移动文件(路径一, 路径二) {
    var 路径a = 路径二
    var 文件集a = files.listDir(路径a)
    if (文件集a.length > 0) {
        for (let index = 0; index < 文件集a.length; index++) {
            files.remove(路径a + 文件集a[index])
            media.scanFile(路径a + 文件集a[index]);
        }
    }
    var 路径 = 路径一
    var 文件集 = files.listDir(路径)
    log(文件集.length)
    if (文件集.length > 0) {
        var 文件路径 = 路径 + 文件集[random(0, 文件集.length - 1)]
        var 移动路径 = 路径a + 文件集[random(0, 文件集.length - 1)]
        files.move(文件路径, 移动路径)
        media.scanFile(文件路径);
        media.scanFile(移动路径);
    } else {
        alert("图片或者视频没了,脚本停止")
        exit()
    }
}